package clientegestionred;

/** Clase para mostrar la informacion del sistema **/
/**
 *
 * @author jose
 */

import java.io.IOException;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.smi.*;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class InfoSistema {

    private static String address; //direccion del agente SNMP
    private static Snmp snmp; //objeto para la comunicacion SNMP con el agente

    //system
    public static final OID SYS_DESCR = new OID("1.3.6.1.2.1.1.1.0");
    public static final OID SYS_UPTIME = new OID("1.3.6.1.2.1.1.3.0");
    public static final OID SYS_CONTACT = new OID("1.3.6.1.2.1.1.4.0");
    public static final OID SYS_NAME = new OID("1.3.6.1.2.1.1.5.0");
    public static final OID SYS_LOCATION = new OID("1.3.6.1.2.1.1.6.0");

    //ip
    public static final OID IP_AD_ENT_ADDR = new OID("1.3.6.1.2.1.4.20.1.1");//mirar a ver, pa sacar la ip
    public static final OID IP_ROUTE_NEXT_HOP = new OID("1.3.6.1.2.1.4.21.1.7.0.0.0.0");//PUERTA DE ENLACE??

    /* Constructor */
    public InfoSistema(String address) {
        super();
        this.address = address;
        OID[] oids = new OID[]{SYS_DESCR, SYS_NAME, SYS_CONTACT, SYS_UPTIME,
                        SYS_LOCATION, IP_ROUTE_NEXT_HOP};
        try {
            start();
            Consulta consulta = new Consulta(snmp,oids, address);
            String []respuestas = consulta.getMultiple(oids);
            System.out.println("\tDescripcion del equipo: " + respuestas[0]);
            System.out.println("\tNombre: " + respuestas[1]);
            System.out.println("\tInformacion de contacto: " + respuestas[2]);
            System.out.println("\tTiempo desde el arranque: " + respuestas[3]);
            System.out.println("\tLocalizacion: " + respuestas[4]);
            System.out.println("\tPuerta de enlace: " + respuestas[5]);
            System.out.flush();
            /*Get get = new Get(snmp,oids,address);
            //String sysDescr = get.getSimple(); //obtener 1 elemnteo
            String []respuestas = get.getMultiple();
            System.out.println("\tDescripcion del equipo: " + respuestas[0]);
            System.out.println("\tNombre: " + respuestas[1]);
            System.out.println("\tInformacion de contacto: " + respuestas[2]);
            System.out.println("\tTiempo desde el arranque: " + respuestas[3]);
            System.out.println("\tLocalizacion: " + respuestas[4]);
            System.out.flush();
            //System.out.println(sysDescr);
             */

        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

    //main() que hay que eliminar cuando se integre con la clase principal
    //ahora solo vale para hacer las pruebas mas rapido, sin tener que llamar
    //a GestorDeREd
    public static void main(String args[]){
        InfoSistema client = new InfoSistema("udp:127.0.0.1/161");
        /*String sysDescr;
        Get get = new Get(snmp,SYS_DESCR, address);
        try {
            //sysDescr = client.getSimple(new OID("1.3.6.1.2.1.4.2.0"));
            sysDescr = get.getResposnseAsString();
            System.out.println(sysDescr);
        } catch (IOException ex) {
            ex.printStackTrace();
        }*/
    }


    private void start() throws IOException {
        TransportMapping transport = new DefaultUdpTransportMapping();
        snmp = new Snmp(transport);
        transport.listen();
    }


}